def sieve_of_eratosthenes(n: int):
    # 创建一个布尔数组，初始化所有数为True，表示所有数都是质数
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False  # 0 和 1 不是质数
    for i in range(2, int(n ** 0.5) + 1):
        if is_prime[i]:  # 如果 i 是质数
            for j in range(i * i, n + 1, i):  # 标记 i 的倍数为非质数
                is_prime[j] = False
    primes = [i for i in range(2, n + 1) if is_prime[i]]
    return primes

# 测试
n = 11660
primes = sieve_of_eratosthenes(n)
print(f"质数列表：{primes}")
